Entity Framework এবং ASP.NET Core এ Model Validation একটি গুরুত্বপূর্ণ বিষয়। এটি ব্যবহারকারীর ইনপুটের সঠিকতা নিশ্চিত করতে সাহায্য করে। Data Annotations হল একটি সহজ পদ্ধতি যা আপনাকে মডেল প্রোপার্টির ওপর বিভিন্ন বৈধতা (validation) বিধিনিষেধ আরোপ করতে দেয়। এগুলি এমন অ্যাট্রিবিউট যা মডেল ক্লাসের প্রপার্টির সাথে যুক্ত থাকে এবং যখন ডেটা সেভ বা সাবমিট করা হয়, তখন এগুলি পরীক্ষা করা হয়।
এখানে আমরা দেখব কিভাবে Data Annotation Attribute ব্যবহার করে মডেল ভ্যালিডেশন করা যায়।
ASP.NET Core বা Entity Framework এ বিভিন্ন Data Annotation অ্যাট্রিবিউট ব্যবহার করা হয়, যেমন:
Required
StringLength
Range
RegularExpression
EmailAddress
Compare
DataType
Range
প্রতিটি অ্যাট্রিবিউটের মাধ্যমে বিভিন্ন ধরণের ভ্যালিডেশন করা যায়। নিচে বিস্তারিতভাবে আলোচনা করা হলো।
Required
AttributeRequired
অ্যাট্রিবিউটটি ব্যবহার করা হয়, কোনো প্রপার্টি ফাঁকা না থাকা নিশ্চিত করার জন্য। এটি প্রোপার্টির মান অবশ্যই প্রদান করতে হবে।
public class Student
{
public int Id { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
public int Age { get; set; }
}
এখানে, Name
প্রপার্টি Required
অ্যাট্রিবিউট ব্যবহার করে মার্ক করা হয়েছে। এর মানে, Name
ফিল্ডটি ফাঁকা রাখা যাবে না এবং যদি ফাঁকা রাখা হয়, তাহলে কাস্টম মেসেজ "Name is required" দেখানো হবে।
StringLength
AttributeStringLength
অ্যাট্রিবিউটটি ব্যবহার করে আপনি স্ট্রিং প্রপার্টির সর্বোচ্চ এবং সর্বনিম্ন দৈর্ঘ্য নির্ধারণ করতে পারেন।
public class Student
{
public int Id { get; set; }
[StringLength(50, MinimumLength = 2, ErrorMessage = "Name must be between 2 and 50 characters")]
public string Name { get; set; }
public int Age { get; set; }
}
এখানে, Name
ফিল্ডের দৈর্ঘ্য ২ থেকে ৫০ অক্ষরের মধ্যে থাকতে হবে। এর বাইরে গেলে কাস্টম মেসেজ "Name must be between 2 and 50 characters" দেখানো হবে।
Range
AttributeRange
অ্যাট্রিবিউটটি ব্যবহার করা হয় একটি প্রপার্টির মান নির্দিষ্ট পরিসরের মধ্যে থাকতে হবে, এমনভাবে সুনির্দিষ্ট করার জন্য। এটি সংখ্যার জন্য বিশেষভাবে কার্যকর।
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
[Range(18, 100, ErrorMessage = "Age must be between 18 and 100")]
public int Age { get; set; }
}
এখানে, Age
প্রপার্টি ১৮ থেকে ১০০ এর মধ্যে থাকতে হবে। এই পরিসরের বাইরে গেলে কাস্টম মেসেজ দেখানো হবে: "Age must be between 18 and 100"।
RegularExpression
AttributeRegularExpression
অ্যাট্রিবিউটটি একটি নির্দিষ্ট প্যাটার্নে ডেটা যাচাই করার জন্য ব্যবহৃত হয়। এটি সাধারণত ইমেইল বা ফোন নম্বরের মতো নির্দিষ্ট ফরম্যাটের জন্য ব্যবহার করা হয়।
public class Student
{
public int Id { get; set; }
[RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Name can only contain letters")]
public string Name { get; set; }
public int Age { get; set; }
}
এখানে, Name
প্রপার্টি শুধুমাত্র অক্ষর (letters) গ্রহণ করবে। অন্য কিছু ইনপুট দিলে কাস্টম মেসেজ "Name can only contain letters" দেখানো হবে।
EmailAddress
AttributeEmailAddress
অ্যাট্রিবিউটটি ইমেইল ফরম্যাট যাচাই করতে ব্যবহৃত হয়।
public class Student
{
public int Id { get; set; }
[EmailAddress(ErrorMessage = "Invalid email address")]
public string Email { get; set; }
public int Age { get; set; }
}
এখানে, Email
প্রপার্টি শুধুমাত্র সঠিক ইমেইল ফরম্যাটে থাকতে হবে। যদি সঠিক ফরম্যাট না হয়, তবে "Invalid email address" মেসেজ প্রদর্শিত হবে।
Compare
AttributeCompare
অ্যাট্রিবিউটটি দুটি প্রপার্টির মান তুলনা করতে ব্যবহৃত হয়, যেমন পাসওয়ার্ড এবং কনফার্ম পাসওয়ার্ড।
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
[Required]
public string Password { get; set; }
[Required]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
এখানে, Password
এবং ConfirmPassword
দুটি প্রপার্টি তুলনা করা হচ্ছে। যদি তাদের মান একই না হয়, তবে "The password and confirmation password do not match." মেসেজ দেখানো হবে।
DataType
AttributeDataType
অ্যাট্রিবিউটটি একটি প্রপার্টির জন্য উপযুক্ত ডেটা টাইপ নির্দেশ করতে ব্যবহৃত হয়। এটি যেমন, ফোন নম্বর, ইমেইল, পাসওয়ার্ড ইত্যাদির জন্য সঠিক ফরম্যাট নির্দেশ করতে পারে।
public class Student
{
public int Id { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.Password)]
public string Password { get; set; }
}
এখানে, Email
এবং Password
প্রপার্টির জন্য উপযুক্ত ডেটা টাইপ (ইমেইল এবং পাসওয়ার্ড) নির্ধারণ করা হয়েছে।
Data Annotation অ্যাট্রিবিউটগুলি Entity Framework বা ASP.NET Core এর মাধ্যমে Model Validation প্রক্রিয়ায় ব্যবহৃত হয়। আপনি যখন একটি মডেল (যেমন Student
) তৈরি করেন এবং তার পর ডেটা সাবমিট করেন, তখন এগুলির মাধ্যমে স্বয়ংক্রিয়ভাবে যাচাই করা হয়। যদি কোনো প্রপার্টি ইনভ্যালিড হয়, তবে তা টেমপ্লেট বা কাস্টম মেসেজের মাধ্যমে ব্যবহারকারীকে জানানো হয়।
var student = new Student { Name = "", Age = 17 };
var validationResults = new List<ValidationResult>();
var validationContext = new ValidationContext(student, null, null);
bool isValid = Validator.TryValidateObject(student, validationContext, validationResults, true);
if (!isValid)
{
foreach (var validationResult in validationResults)
{
Console.WriteLine(validationResult.ErrorMessage);
}
}
এখানে, TryValidateObject
মেথড ব্যবহার করে মডেলের সব প্রপার্টি যাচাই করা হয়েছে। যদি কোনো ত্রুটি থাকে, তবে validationResults
এ তা পাওয়া যাবে এবং ত্রুটি মেসেজ প্রদর্শিত হবে।
Data Annotation Attribute ব্যবহার করে মডেল ভ্যালিডেশন খুবই সহজ এবং কার্যকরী একটি পদ্ধতি। এটি ডেটাবেসে বা ব্যবহারকারী ইনপুটের সময় সঠিকতা নিশ্চিত করতে সাহায্য করে। সঠিকভাবে ফিল্ড ভ্যালিডেশন প্রয়োগ করার মাধ্যমে আপনি অ্যাপ্লিকেশনটির ডেটা নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন।
common.read_more